package com.taxx.dto;

import lombok.Data;
import java.math.BigDecimal;
import java.util.List;

/**
 * 税务报送请求DTO
 */
@Data
public class TaxReportRequest {
    
    /**
     * 业务类型
     */
    private String ywlx;
    
    /**
     * 数据流（压缩包文件流 gzip+base64）
     */
    private String sjl;
    
    /**
     * 平台内的经营者和从业人员身份信息报送
     */
    @Data
    public static class IdentityReportRequest {
        private String ptqymc; // 互联网平台企业名称
        private String ptqytyshxydm; // 互联网平台企业统一社会信用代码
        private String ptuuid; // 平台UUID
        private String pthyycxmc; // 平台名称
        private String bsrq1; // 报送日期 yyyy-MM-dd
        private String dqwsfxxxybs; // 当期无身份信息需要报送 Y/N
        private String jbr; // 经办人
        private String jbrlxfs; // 经办人联系方式
        private List<IdentityDetail> sfxxmx; // 身份信息明细
        
        @Data
        public static class IdentityDetail {
            private String sfblscztdj; // 是否已取得登记证照 Y/N
            private String nsrmc; // 名称（姓名）
            private String shxydm; // 统一社会信用代码
            private String zyfwjgbsDm; // 专业服务机构标识
            private String xm; // 姓名
            private String sfzjlxDm; // 证件类型
            private String zjhm1; // 证件号码
            private String gjhdqszDm; // 国家或地区
            private String sfczhmbsqx; // 是否存在免于报送收入信息情形 Y/N
            private String hmrylxDm; // 免报类型
            private String xxdz; // 地址
            private String yhdpwybsm; // 店铺（用户）唯一标识码
            private String yhdpmc; // 店铺（用户）名称
            private String dpwz; // 网址链接
            private String lxrxm; // 联系人姓名
            private String lxdh; // 联系电话
            private String jykssj; // 经营开始时间 yyyy-MM-dd
            private String jytcsj; // 经营结束时间 yyyy-MM-dd
            private String czlxDm; // 信息状态标识 01:新增 02:变更 03:退出
            private String jszhxx; // 结算（支付）账户信息
        }
    }
    
    /**
     * 平台内的经营者和从业人员收入信息报送
     */
    @Data
    public static class IncomeReportRequest {
        private String ptqymc; // 互联网平台企业名称
        private String ptqytyshxydm; // 互联网平台企业统一社会信用代码
        private String ptuuid; // 平台UUID
        private String pthyycxmc; // 平台名称
        private String bsrq1; // 报送日期 yyyy-MM-dd
        private String dqwsrxxxybs; // 当期无收入信息需要报送 Y/N
        private String srxxssqq; // 收入所属期起 yyyy-MM-dd
        private String srxxssqz; // 收入所属期止 yyyy-MM-dd
        private String jbr; // 经办人
        private String jbrlxfs; // 经办人联系方式
        private List<IncomeDetail> srxxmx; // 收入信息明细
        
        @Data
        public static class IncomeDetail {
            private String sfblscztdj; // 是否已取得登记证照 Y/N
            private String nsrmc; // 名称（姓名）
            private String shxydm; // 统一社会信用代码
            private String xm; // 姓名
            private String sfzjlxDm; // 证件类型
            private String zjhm1; // 证件号码
            private String gjhdqszDm; // 国家或地区
            private String srlydhlwptmc; // 收入来源的互联网平台名称
            private String yhdpwybsm; // 收入来源的店铺（用户）唯一标识码
            private String yhdpmc; // 收入来源的店铺（用户）名称
            private BigDecimal yqddjzzdxshwsrze; // 收入总额（已取得登记证照的销售货物取得的收入）
            private BigDecimal yqddjzzdxshwtkje; // 退款金额（已取得登记证照的销售货物取得的收入）
            private BigDecimal yqddjzzdxswxzcsrze; // 收入总额（已取得登记证照的销售无形资产取得的收入）
            private BigDecimal yqddjzzdxswxzctkje; // 退款金额（已取得登记证照的销售无形资产取得的收入）
            private BigDecimal yqddjzzdxsfwsrze; // 收入总额（已取得登记证照的销售服务取得的收入）
            private BigDecimal yqddjzzdxsfwtkje; // 退款金额（已取得登记证照的销售服务取得的收入）
            private BigDecimal wqddjzzdsrze; // 收入总额（未取得登记证照）
            private BigDecimal wqddjzzdtkje; // 退款金额（未取得登记证照）
            private BigDecimal wqddjzzdsrjexshw; // 收入净额销售货物（未取得登记证照）
            private BigDecimal wqddjzzdsrjehwysfw; // 收入净额运输服务（未取得登记证照）
            private BigDecimal wqddjzzdsrjelwbc; // 收入净额劳务报酬（未取得登记证照）
            private BigDecimal wqddjzzdsrjegc; // 收入净额稿酬（未取得登记证照）
            private BigDecimal wqddjzzdsrjetxqsyf; // 收入净额特许权使用费（未取得登记证照）
            private BigDecimal csqtwljyhdqddsr; // 从事其他网络交易活动取得的收入（净额）
            private BigDecimal zfgptdyjfwfhjje; // 支付给平台的佣金、服务费合计金额
            private Integer ddsl; // 交易（订单）数量（笔）
        }
    }
    
    /**
     * 平台内的平台企业身份信息报送
     */
    @Data
    public static class PlatformReportRequest {
        private String ptqymc; // 互联网平台企业名称
        private String ptqytyshxydm; // 互联网平台企业统一社会信用代码
        private String ptuuid; // 平台UUID
        private String pthyycxmc; // 平台名称
        private String bsrq1; // 报送日期 yyyy-MM-dd
        private String dqwptqysfxxxybs; // 当期无平台企业身份信息需要报送 Y/N
        private String jbr; // 经办人
        private String jbrlxfs; // 经办人联系方式
        private List<PlatformDetail> sfxxmx; // 身份信息明细
        
        @Data
        public static class PlatformDetail {
            private String nsrmc; // 名称（姓名）
            private String shxydm; // 统一社会信用代码（纳税人识别号）
            private String pthyycxmc; // 平台内的平台名称
            private String ptndptwybsm; // 平台内的平台唯一标识码
            private String jykssj; // 经营开始时间 yyyy-MM-dd
            private String jytcsj; // 经营退出时间 yyyy-MM-dd
            private String czlxDm; // 信息状态标识 01:新增 02:变更 03:退出
        }
    }

    /**
     * 作废身份信息报送
     */
    @Data
    public static class IdentityCancelRequest {
        private String ptqymc;
        private String ptqytyshxydm;
        private String ptuuid;
        private String pthyycxmc;
        private String bsrq1;
        private String jbr;
        private String jbrlxfs;
        private List<IdentityCancelDetail> sfxxmx;

        @Data
        public static class IdentityCancelDetail {
            private String sfblscztdj;
            private String nsrmc;
            private String shxydm;
            private String xm;
            private String sfzjlxDm;
            private String zjhm1;
            private String gjhdqszDm;
            private String yhdpwybsm;
        }
    }


    /**
     * 作废收入信息报送
     */
    @Data
    public static class IncomeCancelRequest {
        private String ptqymc;
        private String ptqytyshxydm;
        private String ptuuid;
        private String pthyycxmc;
        private String bsrq1;
        private String srxxssqq;
        private String srxxssqz;
        private String jbr;
        private String jbrlxfs;
        private List<IncomeCancelDetail> srxxmx;

        @Data
        public static class IncomeCancelDetail {
            private String sfblscztdj;
            private String nsrmc;
            private String shxydm;
            private String xm;
            private String sfzjlxDm;
            private String zjhm1;
            private String gjhdqszDm;
            private String yhdpwybsm;
            private String srlydhlwptmc;
        }
    }

    /**
     * 作废平台内的平台企业身份信息报送
     */
    @Data
    public static class PlatformCancelRequest {
        private String ptqymc;
        private String ptqytyshxydm;
        private String ptuuid;
        private String pthyycxmc;
        private String bsrq1;
        private String jbr;
        private String jbrlxfs;
        private List<PlatformCancelDetail> sfxxmx;
        @Data
        public static class PlatformCancelDetail {
            private String nsrmc;
            private String shxydm;
            private String pthyycxmc;
            private String ptndptwybsm;
        }
    }


}
